'''
Created on 23/03/2012

@author: nicolas
'''

import pylab as p


N = 50
STEP = 1
serie = p.arange(-N - 1, N + 1, STEP)

ALPHA = 0.7 # menor que 1


# Defino el escalon
def U(n):
    if n >= 0:
        return 1
    else:
        return 0
    
# Defino la delta
def delta(n):
    if n == 0:
        return 1
    else:
        return 0


# Defnino las entradas:
def Xa(n):
    return ((ALPHA ** n) * U(n))

def Xb(n):
    return (2 * U(2 - n))


# Defino las respuestas impulsivas
# Ej 5
def h1(n):
    return (U(n) - U(n - 4))

# Ej 6 a
def h2(n):
    return (U(n) - U(n - 20))

# Ej 6 b
def h3(n):
    return (delta(n) - delta(n - 1))


# Calculo los muestreos:

muestreoA = []
muestreoB = []
muestreoh1 = []
muestreoh2 = []
muestreoh3 = []

for n in serie:
    muestreoA.append(Xa(n))
    muestreoB.append(Xb(n))
    muestreoh1.append(h1(n))
    muestreoh2.append(h2(n))
    muestreoh3.append(h3(n))
    
    
# Calculo las respuestas con convolucion:

# Entrada a
respuesta_1a = p.convolve(muestreoA, muestreoh1, 'same')
respuesta_2a = p.convolve(muestreoA, muestreoh2, 'same')
respuesta_3a = p.convolve(muestreoA, muestreoh3, 'same')

# Entrada b
respuesta_1b = p.convolve(muestreoB, muestreoh1, 'same')
respuesta_2b = p.convolve(muestreoB, muestreoh2, 'same')
respuesta_3b = p.convolve(muestreoB, muestreoh3, 'same')


# Grafico
f = p.figure(1)
f.subplots_adjust(hspace=.5)

p.subplot(311)
p.title('Respuesta 1 A')
p.plot(serie, respuesta_1a)
p.plot(serie, respuesta_1a, 'x')
p.xlim(xmin=-1, xmax= 20)

p.subplot(312)
p.title('Respuesta 2 A')
p.plot(serie, respuesta_2a)
p.plot(serie, respuesta_2a, 'x')
p.xlim(xmin=-1, xmax= 40)

p.subplot(313)
p.title('Respuesta 3 A')
p.plot(serie, respuesta_3a)
p.plot(serie, respuesta_3a, 'x')
p.xlim(xmin=-10, xmax= 10)

p.savefig('punto_2_A.png')


f = p.figure(2)
f.subplots_adjust(hspace=.5)

p.subplot(311)
p.title('Respuesta 1 B')
p.plot(serie, respuesta_1b)
p.plot(serie, respuesta_1b, 'x')
p.xlim(xmin=-55, xmax= 10)
p.ylim(ymin=-1, ymax= 9)

p.subplot(312)
p.title('Respuesta 2 B')
p.plot(serie, respuesta_2b)
p.plot(serie, respuesta_2b, 'x')
p.xlim(xmin=-55, xmax= 25)
p.ylim(ymin=-2, ymax= 42)

p.subplot(313)
p.title('Respuesta 3 B')
p.plot(serie, respuesta_3b)
p.plot(serie, respuesta_3b, 'x')
p.xlim(xmin=-5, xmax= 10)
p.ylim(ymin=-3, ymax= 1)

p.savefig('punto_2_B.png')

p.show()

